package server.simple100;


import org.junit.Test;

/***
 * 100. 相同的树
 */
public class LeetCode100 {


    @Test
    public void test() {
        TreeNode treeNode1 = new TreeNode(1, new TreeNode(2), new TreeNode(2));
        TreeNode treeNode2 = new TreeNode(1, new TreeNode(2), new TreeNode(2));
        System.out.println(isSameTree(treeNode1, treeNode2));
    }

    //           1
    //       2       3
    //    2    2   3     5
    public boolean isSameTree(TreeNode p, TreeNode q) {
        StringBuilder sb1 = new StringBuilder("");
        StringBuilder sb2 = new StringBuilder("");
        next(p, sb1);
        next(q, sb2);
        return sb1.toString().equals(sb2.toString());
    }


    public void next(TreeNode node, StringBuilder sb) {
        if(node==null){
            sb.append("-");
            return;
        }else{
            sb.append(node.val);
        }

        if (node.left != null) {
            next(node.left, sb);
        }else{
            sb.append("-");
        }
        if (node.right != null) {
            next(node.right, sb);
        }else{
            sb.append("-");
        }
    }


    public class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode() {
        }

        TreeNode(int val) {
            this.val = val;
        }

        TreeNode(int val, TreeNode left, TreeNode right) {
            this.val = val;
            this.left = left;
            this.right = right;
        }
    }
}

//    给你两棵二叉树的根节点 p 和 q ，编写一个函数来检验这两棵树是否相同。
//
//        如果两个树在结构上相同，并且节点具有相同的值，则认为它们是相同的。
//
//         
//
//        示例 1：
//
//
//        输入：p = [1,2,3], q = [1,2,3]
//        输出：true
//        示例 2：
//
//
//        输入：p = [1,2], q = [1,null,2]
//        输出：false
//        示例 3：
//
//
//        输入：p = [1,2,1], q = [1,1,2]
//        输出：false
//         
//
//        来源：力扣（LeetCode）
//        链接：https://leetcode-cn.com/problems/same-tree
//        著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。